home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 041-050 / amok50 / fixamber / fixamber.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  72 lines

  1. (*---------------------------------------------------------------------------
  2.  :Program.      FixAmber.mod
  3.  :Author.       Fridtjof Siebert
  4.  :Address.      Nobileweg 67, D-7000 Stuttgart 40
  5.  :Shortcut.     [fbs]
  6.  :Copyright.    PD
  7.  :Language.     OBERON
  8.  :Translator.   Amiga Oberon Compiler V1.36
  9.  :History.      V1.0, 07-Mar-91, [fbs]
  10.  :Usage.        run FixAmber
  11. ---------------------------------------------------------------------------*)
  12.  
  13. MODULE FixAmber;
  14.  
  15. IMPORT e   := Exec,
  16.        h   := Hardware,
  17.        es  := ExecSupport,
  18.        ol  := OberonLib,
  19.        sys := SYSTEM;
  20.  
  21. VAR
  22.   VertBIntr: e.InterruptPtr;
  23.  
  24.   port,oldport: e.MsgPortPtr;
  25.  
  26. CONST
  27.   PortName = "AmberFlicker.port";
  28.  
  29.  
  30. PROCEDURE * MyIntProc(); (* $StackChk- *)
  31. BEGIN
  32.   h.custom.color[0] := 0;
  33. END MyIntProc;
  34.  
  35. (* $StackChk= *)
  36.  
  37.  
  38. BEGIN
  39.  
  40.   e.Forbid;
  41.     oldport := e.FindPort(PortName);
  42.     IF oldport#NIL THEN
  43.       e.Signal(oldport.sigTask,LONGSET{oldport.sigBit});
  44.       e.Permit;
  45.       HALT(0);
  46.     END;
  47.     port := es.CreatePort(PortName,0);
  48.   e.Permit;
  49.  
  50.   IF port=NIL THEN HALT(20) END;
  51.  
  52.   INCL(ol.MemReqs,e.public);
  53.   NEW(VertBIntr);
  54.   EXCL(ol.MemReqs,e.public);
  55.  
  56.   VertBIntr^ := e.Interrupt(NIL,
  57.                             NIL,
  58.                             e.interrupt,
  59.                             0,
  60.                             sys.ADR("Gib AMBER keine Chance!"),
  61.                             NIL,
  62.                             NIL);
  63.  
  64.   VertBIntr.code := MyIntProc;
  65.  
  66.   e.AddIntServer(h.vertb,VertBIntr);
  67.   REPEAT UNTIL port.sigBit IN e.Wait(LONGSET{port.sigBit});
  68.   es.DeletePort(port);
  69.   e.RemIntServer(h.vertb,VertBIntr);
  70.  
  71. END FixAmber.
  72.